// 封装vue插件
import GeekIcon from './geek-icon.vue'
// 导入dayjs
import dayjs from 'dayjs'
// dayjs 计算相对时间的模块
import relativeTime from 'dayjs/esm/plugin/relativeTime'

// 导入高亮
import hljs from 'highlight.js'
import 'highlight.js/styles/vs2015.css'
dayjs.extend(relativeTime)

// 导入语言包
require('dayjs/locale/zh-cn')
// 更改全局语言配置
dayjs.locale('zh-cn')

export default {
  install (Vue) {
    // Vue就是构造函数,可以注册全局组件,指令,过滤器,原型属性
    // 扩展vue原来有的功能,认为是vue插件
    // 当vue.ues()的时候,就会执行install函数,默认传入Vue构造函数
    Vue.component(GeekIcon.name, GeekIcon)

    // 过滤器
    Vue.filter('relativeTime', (value) => {
      // 把value转换成相对事件
      // 使用dayjs来转换相对时间
      // dayjs(value) 时间对象，toNow() 和现在的时间进行比较，得到一个相对时间
      return dayjs(value).toNow()
    })

    // 代码高亮 -自定义指令
    Vue.directive('highlight', (el) => {
      el.querySelectorAll('pre code').forEach(dom => {
        hljs.highlightBlock(dom)
      })
    })
  }
}
